#include"SqStack.h"
bool StackEmpty(SqStack S) {
    return S.top == -1;
}

// InitStack
void InitStack(SqStack& S) {
    if (S.top > -1) {
        return;
    }
    S.top = -1;
    // S.top in [-1, 9] == index's range 
    // else S.top = 0
}

// push Stack
bool Push(SqStack& S, ElemType x) {
    if (S.top == MaxSize - 1) {
        // if init-top == 0, need use (S.top == MaxSize)
        return false;
    }
    // S.top += 1;
    // S.data[S.top] = x;
    S.data[++S.top] = x;
    // if init-top == 0, S.data[S.top++] = x;
    return true;
}

// pop Stack
bool Pop(SqStack& S, ElemType& x) {
    if (S.top != -1) {
        x = S.data[S.top--];
        // if init-top == 0, S.data[--S.top] = x
        return true;
    }
    return false;
}

// Get Top Elem
bool GetTop(SqStack S, ElemType& x) {
    if (S.top == -1) {
        return false;
    }
    x = S.data[S.top];
    return true;
}
